#!/bin/bash

# IO优化恢复脚本
# 用于恢复系统默认IO设置

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 检查是否以root权限运行
if [[ $EUID -ne 0 ]]; then
   echo -e "${RED}此脚本需要root权限运行${NC}"
   echo "请使用 sudo $0 重新运行"
   exit 1
fi

echo -e "${BLUE}===== 恢复系统默认IO设置 =====${NC}"
echo "此脚本将恢复系统默认IO参数设置"
echo

# 停止并禁用服务
echo -e "${BLUE}[1/5] 停止并禁用IO优化服务...${NC}"
systemctl stop io-optimizer.service 2>/dev/null
systemctl disable io-optimizer.service 2>/dev/null
rm -f /etc/systemd/system/io-optimizer.service
systemctl daemon-reload
echo -e "${GREEN}✓ 服务已停止并禁用${NC}"

# 恢复内核参数
echo -e "${BLUE}[2/5] 恢复默认内核参数...${NC}"
if [ -f /etc/sysctl.d/99-io-optimization.conf ]; then
    rm -f /etc/sysctl.d/99-io-optimization.conf
    echo -e "${GREEN}✓ 已删除IO优化配置文件${NC}"
    
    # 设置默认参数
    cat > /etc/sysctl.d/99-io-default.conf << EOF
# 默认IO参数
# 由io-optimizer-restore脚本生成

# 脏页控制参数
vm.dirty_background_ratio = 10
vm.dirty_ratio = 20
vm.dirty_writeback_centisecs = 500
vm.dirty_expire_centisecs = 3000

# 内存管理参数
vm.swappiness = 60
vm.vfs_cache_pressure = 100
EOF
    
    # 应用默认参数
    sysctl -p /etc/sysctl.d/99-io-default.conf
    echo -e "${GREEN}✓ 已恢复默认内核参数${NC}"
else
    echo -e "${YELLOW}未找到IO优化配置文件，跳过此步骤${NC}"
fi

# 恢复IO调度器
echo -e "${BLUE}[3/5] 恢复默认IO调度器...${NC}"
if [ -f /etc/udev/rules.d/60-scheduler.rules ]; then
    rm -f /etc/udev/rules.d/60-scheduler.rules
    echo -e "${GREEN}✓ 已删除IO调度器规则${NC}"
    
    # 恢复默认调度器
    for device in /sys/block/nvme*; do
        if [ -f "$device/queue/scheduler" ]; then
            echo "none" > "$device/queue/scheduler" 2>/dev/null || echo "mq-deadline" > "$device/queue/scheduler"
        fi
    done
    echo -e "${GREEN}✓ 已恢复默认IO调度器${NC}"
else
    echo -e "${YELLOW}未找到IO调度器规则文件，跳过此步骤${NC}"
fi

# 恢复文件系统挂载选项
echo -e "${BLUE}[4/5] 恢复默认文件系统挂载选项...${NC}"
if [ -f /etc/fstab.backup.* ]; then
    LATEST_BACKUP=$(ls -t /etc/fstab.backup.* | head -1)
    if [ -n "$LATEST_BACKUP" ]; then
        cp "$LATEST_BACKUP" /etc/fstab
        echo -e "${GREEN}✓ 已从备份恢复fstab: $LATEST_BACKUP${NC}"
    else
        echo -e "${YELLOW}未找到有效的fstab备份，跳过此步骤${NC}"
    fi
else
    echo -e "${YELLOW}未找到fstab备份文件，尝试修复挂载选项...${NC}"
    # 尝试修复挂载选项
    sed -i 's/noatime,commit=60,barrier=0/defaults/' /etc/fstab
    echo -e "${GREEN}✓ 已尝试恢复默认挂载选项${NC}"
fi

# 删除脚本
echo -e "${BLUE}[5/5] 清理系统中的优化脚本...${NC}"
if [ -f /opt/ohmylinux/io-optimizer.sh ]; then
    rm -f /opt/ohmylinux/io-optimizer.sh
    echo -e "${GREEN}✓ 已删除系统中的优化脚本${NC}"
else
    echo -e "${YELLOW}未找到系统中的优化脚本，跳过此步骤${NC}"
fi

echo
echo -e "${GREEN}===== 系统IO设置已恢复默认 =====${NC}"
echo "已执行的操作:"
echo "1. 停止并禁用IO优化服务"
echo "2. 恢复默认内核参数"
echo "3. 恢复默认IO调度器"
echo "4. 恢复默认文件系统挂载选项"
echo "5. 清理系统中的优化脚本"
echo
echo -e "${YELLOW}建议重启系统以应用所有更改${NC}"